﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lesson_2
{
    internal class Program
    {
        static void Main(string[] args)
        {

            #region 作业
            int appleNum = 10;
            Console.WriteLine("苹果的个数是:" + appleNum);
            float hairHei = 12.3f;
            Console.WriteLine("头发的长度是:" + hairHei + "cm");
            char eyeColor = '棕';
            Console.WriteLine("眼睛的颜色是:" + eyeColor + "色");
            double weight = 1.2;
            Console.WriteLine("大象的重量是:" + weight + "吨");
            int handNum = 10;
            Console.WriteLine("手指的个数是:" + handNum);
            float wd = 32.3f;
            Console.WriteLine("空调的温度是:" + wd + "°");
            bool fx = false;
            Console.WriteLine("现在放学了吗?" + fx);
            bool xy = false;
            Console.WriteLine("明天下雨吗?" + xy);
            float waterWei = 1.3f;
            Console.WriteLine("水的重量是:" + waterWei + "吨");
            int xms = 41;
            Console.WriteLine("鞋的码数是:" + xms);
            string girlFriend = "张三";
            Console.WriteLine("女朋友的名字是:" + girlFriend);
            bool girlFriN = true;
            Console.WriteLine("有没有女朋友" + girlFriN);
            double phone = 12345678901;
            long phone1 = 12345678901;
            Console.WriteLine("手机号码是:" + phone);


            Console.WriteLine("  *  ");
            Console.WriteLine(" * * ");
            Console.WriteLine("* * *");
            Console.WriteLine(" * * ");
            Console.WriteLine("  *  ");

            Console.WriteLine("大家好,我叫张三,今天很开心认识大家,我的爱好的躺平,希望以后多多关照!");
            // 驼峰命名法:首字母小写,之后单词的首字母大写 
            string myName = "张三";
            float myHeight = 185.6f;
            float myWeight = 76.2f;
            char mySex = '男';
            string myGender = "女";
            #endregion

            #region 常量
            // 1.声明变量的语法结构: 变量类型 变量名 = 初始值;     
            //                     变量类型 变量名;   变量名= 初始值
            // 2.声明常量: 有一个关键字const 
            //       结构: const 变量类型 变量名 = 初始值;  
            // 3.变量的声明 
            int a = 10;
            a = 30;
            int b;
            b = 20;
            b = 40;
            // 3.1 变量的值是可以被修改的 
            // 4.常量的声明:
            const int c = 20;

            //const int d;
            //d = 30;
            // 4.1 常量必须初始化

            //  c = 50; 
            // 4.2 常量的值不能被修改  

            // 5.什么时候用到常量?
            //   当我们定义一个值,并且希望这个值不能被修改, 这个时候就用常量 

            #endregion

            #region 变量类型的存储空间
            // 变量类型: 整型变量, 浮点数(小数), 特殊类型(bool,char,string),枚举,结构体,数组
            // 1.可以通过sizeof方法获取变量类型所占取的内存空间,单位: 字节
            // 2.整型变量分为 有符号整型变量和无符号的整型变量 
            // 2.1 有符号的整型变量  
            int sbyteSize = sizeof(sbyte);
            Console.WriteLine("sbyte所占的字节数是:" + sbyteSize); // 1
            int shortSize = sizeof(short);  
            Console.WriteLine("short所占的字节数是:" + shortSize); // 2
            int intSize = sizeof(int);
            Console.WriteLine("int所占的字节数是:" + intSize);     // 4
            int longSize = sizeof(long);
            Console.WriteLine("long所占的字节数是:" + longSize);   // 8
            // 2.2 无符号的整型变量 
            int byteSize = sizeof(byte);
            Console.WriteLine("byte所占的字节数是:" + byteSize);  // 1
            int ushortSize = sizeof(ushort);
            Console.WriteLine("ushort所占的字节数是:" + ushortSize);// 2
            int uintSize = sizeof(uint);
            Console.WriteLine("uint所占的字节数是:" + uintSize);   // 4
            int ulongSize = sizeof(ulong);
            Console.WriteLine("ulong所占的字节数是:" + ulongSize); // 8

            // 3.浮点数(小数)
            int floatSize = sizeof(float);
            Console.WriteLine("float所占的字节数是:" + floatSize); // 4
            int doubleSize = sizeof(double);
            Console.WriteLine("double所占的字节数是:" + doubleSize);// 8
            int decimalSize = sizeof(decimal);
            Console.WriteLine("decimal所占的字节数是:" + decimalSize); // 16

            // 4.特殊类型 
            int boolSize = sizeof(bool);
            Console.WriteLine("bool所占的字节数是:" + boolSize); //1
            int charSize = sizeof(char);
            Console.WriteLine("char所占的字节数是:" + charSize); // 2;
                                                          // int stringSize = sizeof(string);
                                                          // 报错:  string字符串的长度是没有上限的,所以不能通过sizeof得到string类型所占的字节大小

            // 5.比字节更小的单位: 位,     1字节 = 8位


            #endregion

            #region 转义字符 
            // 1.什么是转义字符:是字符串的一部分,表示一些特殊的符号 ( 比如在控制台上打印出 "哈哈" ) 
            // string str = ""哈哈""; 像这种时候就需要用到转义字符 
            // 2.转义字符写法: \字符,  \ 和 不同的字符组合, 表示不同的含义

            // \" 表示 " 
            string str = " \"哈哈 \" ";
            Console.WriteLine(str);
            // \' 表示 ' 
            str = " \'哈哈\' ";
            Console.WriteLine(str);
            // \n: 换行 
            str = "123\n456";
            Console.WriteLine(str);
            // \\ : \ 
            str = "1\\2\\3\\4\\5\\6";
            Console.WriteLine(str);
            // \a : 表示 警报音
            str = "\a";
            Console.WriteLine(str);
            // \t: 空一个tab键的距离 
            str = "1\t2\t3";
            Console.WriteLine(str);
            str = "1     2     3";
            Console.WriteLine(str);
            // \b:光标退格
            str = "123\b123";
            Console.WriteLine(str);

            // 就想在控制台打印 : 1\\2\\3\\4\\5; 
            str = "1\\\\2\\\\3\\\\4\\\\5";
            Console.WriteLine(str);
            // 这样可以但是太麻烦了.  
            // 取消转义字符(不想让转义字符起作用),需要在字符串前面加上@;
            str = @"1\\2\\3\\4\\5";
            Console.WriteLine(str);


            #endregion

        }
    }
}
